\subsection{Classes utiles}
Nous avons défini des classes utiles pour la librairie : Color3, Color4, Vector2 et Vector3.

Color3 et Color4, comme leur nom l'indique servent à définir une couleur (RGB pour Color3 et RGBA pour Color4).

Vector2 et Vector3, comme leur nom l'indique servent à définir un vecteur. Vector 2 sert à créer un vecteur de 2 dimensions et Vector3 de 3 dimensions. De plus, Vector3 possèdent des méthodes utiles pour normaliser un vecteur, pour faire un produit scalaire et pour calculer la longueur d'un vecteur.

Toutes les classes sont dans un template permettant de définir le type de chaque variable qui composent la couleur ou le vecteur. De plus, nous avons fait des typedefs pour une meilleure lisibilité dans le code. Ainsi, au lieu d'écrire Color3<int>, il suffira d'écrire Color3i, ou bien au lieu d'écrire Vector3<double>, il suffira d'écrire Vector3d.

La prochaine étape dans le développement de la librairie serait de créer une classe Matrix contenant une matrice 4x4 qu'on appelle aussi quaternion. Elle serait utile pour optimiser la gestion des transformations et cela corresponderait à la nouvelle norme d'OpenGL 3.0.


\subsection{Camera}
Nous avons créé une interface ICamera (fichier ICamera.h).
L'idée est de créer une caméra générique pour ensuite créer des classes héritières et de les implémenter afin de créer une caméra selon la volonté du programmeur.

Nous avons défini un exemple : la classe Camera (fichiers Camera.h et Camera.cpp). C'est une caméra FreeFly.

Comment implémenter une caméra ? ICamera contient une map nommée KeyMap qui contient un évènement associé à une touche du clavier et une map KeyStates qui contient un évènement associé à un booléen pour définir si cet évènement est actif ou non.
Il faut redéfinir la méthode setDefaultKeyMap() pour associer les touches que nous souhaitons à un évènement(par exemple : ``avancer'', ``reculer'', etc).
Il faut redéfinir la méthode getEvent() pour vérifier si les différents évènements sont actifs ou non.
Enfin, il faut redéfinir la méthode animate() pour mettre des conditionnelles et gérer les déplacements de la caméra.
